package com.cbg.es.repository;

import com.cbg.es.entity.EsCategory;
import com.shuyuwl.core.repository.DaoRepository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 全景通查分类 repository
 *
 * @author wangjuzheng
 * @since 2019-10-16
 */
@Repository
public interface IEsCategoryRepository extends DaoRepository<EsCategory, Long>, JpaRepository<EsCategory, Long> {

    /**
     * 获取全部的分类列表信息
     *
     * @param status 状态
     * @return 分类列表信息
     */
    List<EsCategory> findByStatusOrderBySortAsc(Byte status);

    /**
     * 根据父类id和状态查询分类列表信息
     *
     * @param pid    父级id
     * @param status 状态
     * @return 分类列表信息
     */
    List<EsCategory> findByPidAndStatusOrderBySortAsc(Long pid, Byte status);

    /**
     * 根据分类id查询分类信息
     *
     * @param id     分类id
     * @param status 状态
     * @return 分类信息
     */
    EsCategory findByIdAndStatus(Long id, Byte status);

    /**
     * 根据父类id和状态查询最大的排序号
     *
     * @param pid    父级id
     * @param status 状态
     * @return 排序号
     */
    @Query("select MAX(sort) from EsCategory where pid=?1 and status =?2")
    Integer getMaxSort(Long pid, Byte status);

    /**
     * 查询父级id下的是否存在同名的分类信息
     *
     * @param categoryPid  父级id
     * @param categoryName 分类名称
     * @param status       状态
     * @return 分类信息
     */
    List<EsCategory> findByPidAndNameAndStatus(Long categoryPid, String categoryName, Byte status);
}
